ANÁLISIS DE CLUSTER UTILIZANDO R
Resumen.
Se realizó un análisis sobre los indicadores de salud para el año 2009, considerando un total de 174 países y 20 variables. En primera instancia se ejecutó un análisis univariable sobre cada una de las variables bajo estudio, utilizando el diagrama de cajas, donde se pudo apreciar que la mayoría de ellas, presentaban un comportamiento asimétrico y con la presencia de datos atípicos.
Posteriormente se realizó un Análisis de Cluster, mediante el cual los países bajo estudio se categorizaron bajo 5 grupos o clusters, los cuales se pueden resumir de la siguiente manera:
  • Cluster 1: Países en vía de desarrollo con mediana inversión en salud.
  • Cluster 2: Países africanos con mediana inversión en salud.
  • Cluster 3: Países subdesarrollados con poca inversión en el sector salud.
  • Cluster 4: Países desarrollados o en vías de desarrollo con alta inversión en salud.
  • Cluster 5: Países africanos con baja inversión en el sector salud.
Con lo cual, se puede tener una idea de la clasificación de los países para el año 2009 considerando los indicadores de salud.

Metodología.
Muestra: Se seleccionaron los indicadores de Salud correspondientes al año 2009 presentados por el Banco Mundial. Se procedió a eliminar los países y algunos indicadores que presentaban un gran número de datos faltantes, lo que dificultaría el análisis. Arrojando un total de 174 países y 20 variables, las cuales se describen a continuación:
  • Tasa de mortalidad, menores de 5 años (por cada 1.000).
  • Incidencia de tuberculosis (por cada 100.000 personas).
  • Gastos de salud desembolsados por el paciente (% del gasto privado de salud).
  • Gasto en salud per cápita (US$ a precios actuales).
  • Gasto en salud, sector público (% del gasto total en salud).
  • Gasto en salud, total (% del PIB).
  • Tasa de fertilidad en adolescentes (nacimientos por cada 1.000 mujeres entre 15 y 19 años de edad).
  • Tasa de natalidad, nacidos vivos en un año (por cada 1.000 personas).
  • Tasa de mortalidad en un año (por cada 1.000 personas).
  • Tasa de mortalidad, bebés (por cada 1.000 nacidos vivos).
  • Esperanza de vida al nacer, mujeres (años).
  • Esperanza de vida al nacer, total (años).
  • Esperanza de vida al nacer, varones (años).
  • Tasa de fertilidad, total (nacimientos por cada mujer).
  • Población entre 0 y 14 años de edad (% del total).
  • Población de 65 años de edad y más (% del total).
  • Población entre 15 y 64 años de edad (% del total).
  • Crecimiento de la población (% anual).
  • Población, mujeres (% del total).
  • Población, total.

Técnicas de análisis utilizadas:
  • Análisis univariante: estadísticos descriptivos y diagramas de caja.
  • Análisis multivariado: Análisis de Cluster.
Los análisis se realizaron sobre la información relativa a los 174 países bajo estudio, de manera tal, que estos países son los individuos, y las variables se corresponden con los indicadores de salud mencionados anteriormente.

Trabajando directamente por el terminal de R.

Cargar los datos.

Los datos descargados directamente de la página del Banco Mundial a través del siguiente enlace http://datos.bancomundial.org/indicador, fueron analizados en primera instancia como se mencionó anteriormente. Transformándolos posteriormente en un archivo con extensión csv para el manejo en R, se guardaron en el escritorio bajo el nombre de paises_trabajo.


La instrucción para cargar los datos en R es la siguiente:
> paises <-read.csv("C:\\Users\\Eloy Peña\\Desktop\\paises_trabajo.csv")
En la cual se indica la ruta donde se encuentra el archivo de datos.
Para comprobar que los datos fueron leídos correctamente se ejecuta siguiente instrucción:
> paises
Donde se puede verificar que los 174 datos han sido leídos correctamente.

Análisis univariante.
Con el objetivo de conocer los estadísticos descriptivos para cada una de las variables que conforman la base de datos, se ejecuta el siguiente comando:

>summary(paises)
 
El cual arroja el siguiente resultado:
imagen1.png
imagen2.png
imagen3.png
imagen4.png

imagen5.png
imagen6.png
imagen7.png

Pudiéndose apreciar los siguientes estadísticos descriptivos, tales como: el valor mínimo, el máximo, la media, la mediana. Así como el primer y el tercer cuartil, los cuales son los valores hasta los cuales se ha acumulado el 25% y el 75% de los datos, respectivamente.

Diagrama de caja.
Variable 1: Tasa de mortalidad, menores de 5 años (por cada 1.000).
Se deben ejecutar dos comandos en R, los cuales se muestran a continuación:
> ds<-rbind(data.frame(dat=crs$dataset[crs$sample,][,"Tasa.de.mortalidad..menores.de.5.anos..or.cada.1.000."], grp="All"))
> bp <- boxplot(formula=dat ~ grp, data=ds, col=rainbow_hcl(1), ylab="Tasa.de.mortalidad..menores.de.5.anos..or.cada.1.000.", varwidth=TRUE, notch=TRUE)
 

De manera general es:
> ds<-rbind(data.frame(dat=crs$dataset[crs$sample,][,"Nombre de la Variable"], grp="All"))
> bp <- boxplot(formula=dat ~ grp, data=ds, col=rainbow_hcl(1), ylab=" Nombre de la Variable", varwidth=TRUE, notch=TRUE)
 
Para la variable “Tasa de mortalidad, menores de 5 años (por cada 1.000)”, el gráfico de caja es el siguiente:
caja1.png

Analizando los estadísticos descriptivos obtenidos con la instrucción summary(países) junto con este diagrama se puede decir que, se tiene un promedio de 45 niños menores de 5 años por cada 1.000 niños. Presentando por cada 1.000 niños menores de 5 años, un valor mínimo de aproximadamente 3 niños y un valor máximo alrededor de 182 niños menores de 5 años, siendo los países que presentan estos valores extremos, Islandia y Malí, respectivamente.
El diagrama de caja mostrado, evidencia que el comportamiento para dicha variable no es simétrico, ya que en el 50% inferior de los datos, éstos están muy concentrados entre sí, a diferencia del 50% superior, el cual se encuentra bastante disperso. Es importante destacar la presencia de datos outliers o datos atípicos, los cuales están ubicados por encima del límite superior, correspondientes a los países: Angola, Burkina Faso, Burundí, República Centroafricana, Chad, República Democrática del Congo, Guinea-Bissau, Malí y Sierra Leona (los países que representan los puntos outliers se identificaron directamente de la base de los datos originales al ejecutar la instrucción “ > países ”).

Para la Variable 2: Incidencia de tuberculosis (por cada 100.000 personas).
Se deben correr las mismas dos instrucciones ejecutadas previamente, solamente con la pequeña variación que en esta ocasión el diagrama de caja es respecto a una nueva variable (Incidencia de tuberculosis).
> ds<-rbind(data.frame(dat=crs$dataset[crs$sample,][,"Incidencia.de.tuberculosis..por.cada.100.000.personas."], grp="All"))
> bp <- boxplot(formula=dat ~ grp, data=ds, col=rainbow_hcl(1),  ylab="Incidencia.de.tuberculosis..por.cada.100.000.personas.", varwidth=TRUE, notch=TRUE)
 

Cabe destacar que el nombre de la variable debe colocarse tal cual como lo leyó R al cargar el archivo, estos nombres se pueden apreciar al ejecutar el comando “> países”.

caja2.png

Nuevamente, analizando los estadísticos descriptivos obtenidos con la instrucción summary(países) junto con este diagrama se puede decir que, dicha variable tiene un promedio de 142 por cada 100.000 personas. Presentando por cada 100.000 personas, un valor mínimo de aproximadamente 1 persona y un valor máximo alrededor de 1.257 personas, siendo los países que presentan estos valores extremos, Barbados y Swazilandia, respectivamente.
El diagrama de caja mostrado, al igual que para la variable 1, evidencia que el comportamiento para dicha variable no es simétrico, ya que en el 50% inferior de los datos, éstos están bastantes concentrados entre sí, a diferencia del 50% superior, el cual se encuentra muy disperso. Nuevamente, se hacen presentes los datos outliers o atípicos, los cuales están ubicados por encima del límite superior, entre los que se pueden mencionar los siguientes países, Botswana, Djibouti, Gabón, Lesotho, Namibia, Sierra Leona, Sudáfrica, Swazilandia y Timor-Leste.

Para la Variable 3: Gastos de salud desembolsados por el paciente (% del gasto privado de salud).

> ds<- rbind(data.frame(dat=crs$dataset[crs$sample,][,"Gastos.de.salud.desembolsados.por.el.paciente....del.gasto.privado.de.salud."], grp="All"))
> bp <- boxplot(formula=dat ~ grp, data=ds, col=rainbow_hcl(1),  ylab="Gastos.de.salud.desembolsados.por.el.paciente....del.gasto.privado.de.salud.", varwidth=TRUE, notch=TRUE)
 
caja3.png

Teniendo un promedio de 79% de los gastos de salud desembolsados por el paciente. Presentando un valor mínimo del 0,75% Brunei Darussalam y un valor máximo del 100% los siguientes países: Angola, Belice, Bhután, Bosnia y Herzegovina, Comoras, República del Congo, Cuba, Eritrea, Gabón, Guyana, Iraq, Libia, Mauritania, San Vicente y Las Granadinas, República Árabe de Siria, y Turkmenistán.
El diagrama de caja mostrado, evidencia que el comportamiento para dicha variable no es simétrico, ya que en el 50% superior de los datos, éstos están concentrados entre sí, a diferencia del 50% inferior, el cual se encuentra bastante disperso. Es importante destacar la presencia de datos outliers o datos atípicos, los cuales están ubicados por debajo del límite inferior, correspondientes a los países: Brunei Darussalam, Namibia, Suriname, Timor-Leste y Estados Unidos.

Variable 4: Gasto en salud per cápita (US$ a precios actuales).
> ds<- rbind(data.frame(dat=crs$dataset[crs$sample,][,"Gasto.en.salud.per.capita..US..a.precios.actuales."], grp="All"))
> bp <- boxplot(formula=dat ~ grp, data=ds, col=rainbow_hcl(1),  ylab="Gasto.en.salud.per.capita..US..a.precios.actuales.", varwidth=TRUE, notch=TRUE)
 
caja4.png

El cual tiene un promedio de 926,5 US$ para el gasto en salud per cápita. Presentando un valor mínimo de 10,12 US$ y un valor máximo de 8182,86 US$, siendo los países que presentan estos valores extremos, Eritrea y Luxemburgo, respectivamente.
El diagrama de caja mostrado en el gráfico anterior, evidencia que el comportamiento para dicha variable no es simétrico, ya que en el 50% inferior de los datos, éstos están concentrados entre sí, a diferencia del 50% superior, el cual se encuentra más disperso. Es importante destacar la presencia de datos outliers o datos atípicos, los cuales están ubicados por encima del límite superior, correspondientes a los países: Australia, Austria, Bélgica, Canadá, Dinamarca, Finlandia, Francia, Alemania, Grecia, Islandia, Irlanda, Israel, Italia, Japón, Luxemburgo, Países Bajos, Nueva Zelandia, Noruega, Portugal, Eslovenia, España, Suecia, Suiza, Reino Unido y Estados Unidos.

Ejecutándose estas dos mismas instrucciones para el resto de las variables se puede obtener el diagrama de caja para cada una de ellas.

Análisis de Cluster.

Para el análisis de cluster se debe ejecutar el siguiente código:
> distancias<-dist(paises)
> cluster.1<-hclust(distancias,method="average")
> summary(cluster.1)
> plot(cluster.1)
Con la matriz de distancias realizamos el análisis jerárquico de conglomerados por el método de la media o promedio, y necesitamos establecer el número de grupos a elegir. Para ello la función plot imprime el dendograma del análisis, la cual se mostrará a continuación:

dendograma.png


Como el número de clusters a seleccionar queda a criterio del analista, observando los resultados obtenidos, se ha decidido seleccionar 5 cluster. Se puede repetir el proceso para intentar con diferentes números de particiones a partir del siguiente código:

> cluster.1.nojerar<-kmeans(distancias,5)
La instrucción mostrada anteriormente forma una partición de 5 clusters, reiterando nuevamente que el número de particiones queda a criterio del analista, de acuerdo a lo observado en el dendograma.
La siguiente instrucción asigna cada caso bajo estudio a uno de los cinco clusters conformados:
> asignacion<-data.frame(cluster.1.nojerar$cluster)
La siguiente instrucción concatena, es decir, une al final de los datos la variable que contiene el número del cluster a cual pertenece el respectivo país.
> paises<-cbind(paises,asignacion)
La siguiente instrucción lista todas las variables contenidas en el archivo, permitiendo verificar que la variable que contiene el número de cluster al cual pertenece dicho país, se encuentra, en este caso el nombre de la variable es "cluster.1.nojerar.cluster".
> colnames(paises)
adicional1.png

Para conocer la posición de dicha variable y poder cambiarle el nombre, de manera de identificarla más rápido, se ejecuta la siguiente instrucción:
> length(colnames(paises))
adicional2.png

Ya que devuelve que la longitud es de 22 posiciones, y como sabemos que la variable de interés está ubicada en la última posición, procedemos a cambiarle el nombre por “cluster”, ejecutando la siguiente instrucción:
> names(paises)[22]<-"cluster"
Para verificar que el cambio se produjo de manera satisfactoria, se ejecuta la siguiente línea de código:
> colnames(paises)
adicional3.png

Para conocer el número de países asignados a cada uno de los cinco clusters conformados, se ejecuta la siguiente instrucción:
> tapply(paises$Pais..2009.,paises$cluster,length)
adicional4.png
Donde se puede observar que el tamaño para cada uno de los cinco clusters, es el siguiente:
  • Cluster 1: Conformado por 52 paises.
  • Cluster 2: Conformado por 22 paises.
  • Cluster 3: Conformado por 24 paises.
  • Cluster 4: Conformado por 55 paises.
  • Cluster 5: Conformado por 21 paises.
Cabe destacar que la sumatoria de todos los países que conforman dichos clusters, totalizan los 174 paises bajo estudio, es decir, que cada uno de los países fue asignado a uno de los clusters.

Ahora, para conocer los países que conforman cada uno de los clusters conformados se ejecuta el siguiente código:
Cluster 1, conformado por:
> paises[paises$cluster == "1", "Pais..2009."]
cluster1.png

Cluster 2, conformado por:
> paises[paises$cluster == "2", "Pais..2009."]
cluster2.png

Cluster 3, conformado por:
> paises[paises$cluster == "3", "Pais..2009."]
cluster3.png

Cluster 4, conformado por:
> paises[paises$cluster == "4", "Pais..2009."]
cluster4.png

Cluster 5, conformado por:
> paises[paises$cluster == "5", "Pais..2009."]
cluster5.png

Cabe destacar que si se corre nuevamente el mismo análisis con cinco clusters, quedarán conformados exactamente por los mismos países, sin embargo, el orden de los clusters varían.

Para tratar de entender lo que caracteriza a cada uno de estos grupos se procede a realizar un análisis de las medias de cada cluster para cada una de las variables bajo estudio, con el fin de observar donde se presenta la mayor disparidad entre ellos.
En este caso se analizará la variable Gasto en salud, total (% del PIB), ejecutando la siguiente instrucción:
> med_var06<-data.frame(tapply(paises$Gasto.en.salud..total....del.PIB.,paises$cluster,mean))
> med_var06
 
media_Cluster.png

Donde se puede observar que el grupo con mayor Gasto en salud, total (% del PIB), es el cluster 4, seguido por los clusters 2, 1, 5 y 3, respectivamente.

En conclusión, analizando los países que componen cada uno de los clusters, así como el análisis de medias de los clusters para cada uno de las variables bajo estudio, se puede decir que los grupos quedaron conformados de la siguiente manera:
  • Cluster 1: Países en vía de desarrollo con mediana inversión en salud.
  • Cluster 2: Países africanos con mediana inversión en salud.
  • Cluster 3: Países subdesarrollados con poca inversión en el sector salud.
  • Cluster 4: Países desarrollados o en vías de desarrollo con alta inversión en salud.
  • Cluster 5: Países africanos con baja inversión en el sector salud.



Resumen del Libro de Luis Torgo.


Capitulo 2:

Capitulo 3: